package com.tgb.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import sun.misc.BASE64Decoder;

/**
 *
 * <p/>河南百姓融媒文化科技有限公司
 * <p/>创建人：张哲
 * <p/>创建时间：2017-3-24 15:29:06
 * <p/>功能描述：Base64转换成图片工具类
 *
 */
public class Base64ToImgTools {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String imgUrl = "";
        String userUuid = "";
        String imgType="";
        getBase64ToImg(imgUrl,userUuid,imgType);

    }

    public static String getBase64ToImg(String imgUrl,String userUuid,String imgType){

        String newImgUrl = null;

        // 判断base64编码是否为空
        if(StringTools.notNull(imgUrl)){	// base64编码不为空

            // 截取获取到的base64编码,去掉前缀"data:image/png;base64,",只取base64编码
            imgUrl = imgUrl.substring(imgUrl.indexOf(",") + 1);

            BASE64Decoder decoder = new BASE64Decoder();

            try {
                //Base64解码
                byte[] b = decoder.decodeBuffer(imgUrl);
                for(int i=0;i<b.length;++i)
                {
                    if(b[i]<0)
                    {//调整异常数据
                        b[i]+=256;
                    }
                }

                Date date = new Date();
                SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd");

                // 创建当前日期的文件件
                File file = new File("http\\://i.handtv.cn/" + sft.format(date).toString() + "/");
                file.mkdirs();

                //生成jpeg图片
                newImgUrl = "images/" + sft.format(date).toString() + "/" + userUuid +"."+imgType;
                String imgFilePath = "http\\://i.handtv.cn/"+ newImgUrl;//新生成的图片
                OutputStream out = new FileOutputStream(imgFilePath);
                out.write(b);
                out.flush();
                out.close();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        return newImgUrl;
    }
}
